Feature: Step definitions parameters conversion ''''''''''''''''''''''''''''''''''''''''''''''' There is possibility to pass argument converters which may be useful if you need to postprocess step arguments after the parser. Background: - Given File "Example.feature" with content: .. code:: gherkin Feature: Scenario: Given I have a cucumber Scenario: for non-anonymous groups - Given File "conftest.py" with content: .. code:: python from enum import Enum from pytest_bdd import given from re import compile as parse class Item(Enum): CUCUMBER = 'cucumber' @given(parse(r"I have a (?P\w+)"), converters=dict(item=Item)) def i_have_item(item): assert item == Item.CUCUMBER - When run pytest - Then pytest outcome must contain tests with statuses: +--------+ | passed | +========+ | 1 | +--------+ Rule: for anonymous groups Step definitions parameters could not have a name, so we have to name them before conversion Scenario: anonymous group parameter conversion with named mapping - Given File "conftest.py" with content: .. code:: python from enum import Enum from pytest_bdd import given from re import compile as parse class Item(Enum): CUCUMBER = 'cucumber' @given( parse(r"I have a (\w+)"), anonymous_group_names=('item',), converters=dict(item=Item) ) def i_have_item(item): assert item == Item.CUCUMBER - When run pytest - Then pytest outcome must contain tests with statuses: +--------+ | passed | +========+ | 1 | +--------+ Scenario: cucumber expressions parameter conversion - Given File "conftest.py" with content: .. code:: python from enum import Enum from pytest_bdd import given from functools import partial from cucumber_expressions.expression import CucumberExpression from cucumber_expressions.parameter_type_registry import ParameterTypeRegistry parse = partial( CucumberExpression, parameter_type_registry = ParameterTypeRegistry() ) class Item(Enum): CUCUMBER = 'cucumber' @given( parse(r"I have a {word}"), anonymous_group_names=('item',), converters=dict(item=Item) ) def i_have_item(item): assert item == Item.CUCUMBER - When run pytest - Then pytest outcome must contain tests with statuses: +--------+ | passed | +========+ | 1 | +--------+